package fr.uniscol.siecle.readers;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

import org.jdom2.Document;
import org.jdom2.Element;

import fr.uniscol.model.Scolarite;
import fr.uniscol.siecle.model.Division;
import fr.uniscol.siecle.model.Eleve;
import fr.uniscol.siecle.model.FichierExportSTSWeb;
import fr.uniscol.siecle.model.FichierExportSiecle;
import fr.uniscol.siecle.model.FichierExportSiecleEleves;
import fr.uniscol.siecle.model.Groupe;

public class FichierSIECLEElevesReader extends FichierSIECLEReader {
	
	private static DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	
	public FichierExportSiecle readFromDOM(Document dom) {
		
		FichierExportSiecleEleves eleves = new FichierExportSiecleEleves();
		
		eleves.readParametresFromDOM(dom);
		
		List<Element> eEleves = dom.getRootElement().getChild("DONNEES").getChild("ELEVES").getChildren();
		
		Eleve eleve = null;
		Scolarite scolarite = null;
		for(Element eEleve : eEleves){
			eleve = new Eleve();
			
			eleve.setId(Integer.parseInt(eEleve.getAttributeValue("ELEVE_ID")));
			eleve.setNoet(Integer.parseInt(eEleve.getAttributeValue("ELENOET")));
			eleve.setIdEleveEtablissement(eEleve.getAttributeValue("ID_ELEVE_ETAB"));
			eleve.setIne(eEleve.getChildText("ID_NATIONAL"));
			eleve.setNom(eEleve.getChildText("NOM"));
			eleve.setPrenom(eEleve.getChildText("PRENOM"));
			
			try {
				eleve.setDateNaissance(df.parse(eEleve.getChildText("DATE_NAISS")));
				
			} catch (ParseException e) {
			}
			
			eleves.getEleves().add(eleve);
		}
		
		List<Element> eStructuresEleves = dom.getRootElement().getChild("DONNEES").getChild("STRUCTURES").getChildren();
		Division div = null;
		for(Element eStr : eStructuresEleves){
			eleve = eleves.getEleve(Integer.parseInt(eStr.getAttributeValue("ELEVE_ID")));
			
			if(eleve != null){
				for(Element eStructure : eStr.getChildren()){
					div = null;
					if(eStructure.getName().equals("STRUCTURE")){
						if(eStructure.getChildText("TYPE_STRUCTURE").equals("D")){
							div = new Division(eStructure.getChildText("CODE_STRUCTURE"), "", "");
							
						}else if(eStructure.getChildText("TYPE_STRUCTURE").equals("G")){
							div = new Groupe(eStructure.getChildText("CODE_STRUCTURE"), "", "");
						}
					}
					if(div != null){
						eleve.getStructures().add(div);
					}
				}
			}
		}
		
		return eleves;
	}
}
